export interface CaptchaRenderData {
  /**
   * 唯一ID.
   */
  id: string;
  /**
   * 验证码类型.
   */
  type: 'SLIDER' | 'ROTATE' | 'CONCAT' | 'WORD_IMAGE_CLICK';

  /**
   * 背景图.
   */
  backgroundImage: string;

  /**
   * 移动图.
   */
  templateImage: string;

  /**
   * 背景图片所属标签.
   */
  backgroundImageTag: string;

  /**
   * 模板图片所属标签.
   */
  templateImageTag: string;

  /**
   * 背景图片宽度.
   */
  backgroundImageWidth: number;

  /**
   * 背景图片高度.
   */
  backgroundImageHeight: number;

  /**
   * 滑动图片宽度.
   */
  templateImageWidth: number;

  /**
   * 滑动图片高度.
   */
  templateImageHeight: number;

  /**
   * data 扩展数据.
   */
  data?: any;

  /**
   * 标签
   */
  tag: string;

  /**
   * 容器背景图
   */
  boxBackgroundImage: string;

  /**
   * 滑块按钮图
   */
  sliderButtonImage: string;

  /**
   * logo图
   */
  logoImage: string;

  /**
   * loading图
   */
  loadingImage: string;
}

export interface CaptchaMatchingData {
  id: string;
  data: MatchingData;
}

interface MatchingData {
  /**
   * 背景图片宽度
   */
  bgImageWidth: number;

  /**
   * 背景图片高度
   */
  bgImageHeight: number;

  /**
   * 滑块图片宽度
   */
  sliderImageWidth: number;

  /**
   * 滑块图片高度
   */
  sliderImageHeight: number;

  /**
   * 轨迹点列表
   */
  trackList: CaptchaTrack[];


  /**
   * 开始滑动时间
   * 格式: yyyy-MM-dd HH:mm:ss.SSS
   * 时区: GMT+8
   */
  startSlidingTime: string;
  /**
   * 轨迹点扩展数据
   */
  data?: any;

  /**
   * 结束滑动时间
   * 格式: yyyy-MM-dd HH:mm:ss.SSS
   * 时区: GMT+8
   */
  endSlidingTime: string;
}

export interface CaptchaTrack {
  /**
   * 轨迹点X坐标
   */
  x: number;

  /**
   * 轨迹点Y坐标
   */
  y: number;
  /**
   * 轨迹点时间
   */
  t: number;
  /**
   * 轨迹点类型
   */
  type: 'move' | 'down' | 'up' | 'click';
}

export interface CaptchaProps {
  /**
   * 验证结果状态码值
   */
  value: number | string | undefined;
  /**
   * 缩放比例
   */
  scale: number
  /**
   * 加载动画
   * ['slide', 'bounce', 'fade', 'lightSpeed', 'zoom']
   */
  loadingAnimation?: 'slide' | 'bounce' | 'fade' | 'lightSpeed' | 'zoom' | undefined;
  /**
   * 渲染数据api
   */
  renderDataApi: () => Promise<CaptchaRenderData>

  matchingResultCodeProps?: {
    /**
     * 已失效
     */
    expired: number | string
    /**
     * 验证错误
     */
    failed: number | string
    /**
     * 验证成功
     */
    success: number | string

  }
  /**
   * 背景图
   */
  backgroundImage?: string
  /**
   * 是否显示关闭按钮
   */
  showClose: boolean,
  onValueChange?: (value: any) => void;
  onRenderSuccess?: (success: boolean) => void;
  onMatchingData?: (result: CaptchaMatchingData) => void;
}

export interface ClickDataItem {
  count: number;
  left: number | string;
  top: number | string;
}


import messages from './locale'
import KiteCaptcha from './components/captcha/index.tsx'
import KiteConfigProvider from './components/config-provider/index.tsx'

// 统一使用命名导出
export {
  KiteCaptcha,
  KiteConfigProvider,
  messages
}

